package pe.com.hermes.hermetic.negocio.serviceimpl;

import java.math.BigDecimal;

import java.text.DecimalFormat;

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Service;

import pe.com.hermes.hermetic.beans.AbonoCSBean;
import pe.com.hermes.hermetic.beans.ActaBean;
import pe.com.hermes.hermetic.beans.CuentaClienteBean;
import pe.com.hermes.hermetic.beans.EmpleadoBean;
import pe.com.hermes.hermetic.beans.FechaServidorBean;
import pe.com.hermes.hermetic.beans.LogBtmsBean;
import pe.com.hermes.hermetic.beans.MontoTipoMoneBean;
import pe.com.hermes.hermetic.beans.ResultadoAbonoBean;
import pe.com.hermes.hermetic.beans.TipoMonedaAbonoBean;
import pe.com.hermes.hermetic.modelo.dao.AbonosDAO;
import pe.com.hermes.hermetic.modelo.dao.PedidoDAO;
import pe.com.hermes.hermetic.modelo.dao.PuntoDAO;
import pe.com.hermes.hermetic.modelo.dao.TiposDAO;
import pe.com.hermes.hermetic.negocio.service.AbonoService;
import pe.com.hermes.hermetic.negocio.service.HermeticFacade;
import pe.com.hermes.hermetic.negocio.service.TablService;
import pe.com.hermes.hermetic.negocio.ultil.CadenaUtil;
import pe.com.hermes.hermetic.negocio.ultil.ConstantesHermetic;

@Service
public class AbonoServiceImpl implements AbonoService {
     
      private Logger logger=Logger.getLogger(AbonoServiceImpl.class);
      @Autowired
      private HermeticFacade servicioHermetic;
      @Autowired
      private AbonosDAO abonosDAO;
        
    /************* Proceso de Generacion de Abonos - Banco: BANBIF ******************/
       
    public ResultadoAbonoBean generaAbonoBanbif(String cliente,
                                                String sucursal,
                                                String usuario,
                                                List listAbonosPendientes,
                                                FechaServidorBean fechaServidorBean) throws Exception {
  
          ResultadoAbonoBean resultadoBean = new ResultadoAbonoBean();
          resultadoBean.setResultado(ConstantesHermetic.ABONO_GENERA_OK);   
          
          DecimalFormat df1 = new DecimalFormat("############0.00");                 
          DecimalFormat df2 = new DecimalFormat("############0");        
          //H2009092809:16:47  - yyyymmddhh24:mi:ss
          //fechaServidorBean.setFechayyyymmddHHMISS("2009092809:16:47");
          
          //OBTENGO EL TIPO DE UNIDAD MONETARIA POR CLIENTE
          List listaTipoUnidMone = servicioHermetic.getListaUnidMonetaria(cliente, sucursal);
          
          //VALIDO EL RESULTADO DE TIPO DE UNIDAD MONETARIA
          if (listaTipoUnidMone == null || listaTipoUnidMone.size() <= 0){
              logger.error("El banco no tiene la lista de tipo unidad monetaria");            
              resultadoBean.setResultado(ConstantesHermetic.ABONO_GENERA_ERROR);   
              return resultadoBean;
          }
          
          //ELIMINA EL TEXTO ANTES GENERADO
          String respElmin = servicioHermetic.eliminaLineasAbonos(cliente, sucursal);
          
          //OBTENGO EL MONTO TOTAL POR TIPO DE MONEDA
          List listaTotalesTipoUniMone = new ArrayList();
          for (int idxCabe=0; idxCabe < listaTipoUnidMone.size(); idxCabe++){
              TipoMonedaAbonoBean tipoUnidMoneBean = (TipoMonedaAbonoBean)listaTipoUnidMone.get(idxCabe);
              
              //OBTENGO EL TOTAL POR CADA TIPO DE MONEDA DEPO, SOBR y FALT
              double montoDeposito = 0;
              double montoFaltante = 0;
              double montoSobrante = 0;
              MontoTipoMoneBean montoTipoMoneda = new MontoTipoMoneBean();
              
              //PROCESO LOS ABONOS PARA OBTENER EL TOTAL POR TIPO DE MONEDA
               for (int idxAbono=0; idxAbono < listAbonosPendientes.size(); idxAbono++){
                   AbonoCSBean abonoCSBean = (AbonoCSBean) listAbonosPendientes.get(idxAbono);
                   //PROCESAR SOLO SI TIENE EL MISMO TIPO DE UNIDAD MONETARIA
                   if( tipoUnidMoneBean.getCodTipoMoneda().equals(abonoCSBean.getTipoUnidMonetaria())){
                       //PROCESO DE DEPOSTO               
                       if (abonoCSBean.getTipo().equals(ConstantesHermetic.TIPO_OPERACION_DEPOSITO)) {
                           montoDeposito = montoDeposito + Double.parseDouble(abonoCSBean.getMontoArchivo());
                       }else if (abonoCSBean.getTipo().equals(ConstantesHermetic.TIPO_OPERACION_FALTANTE)) {
                           montoFaltante = montoFaltante + Double.parseDouble(abonoCSBean.getMontoArchivo());
                       }else if (abonoCSBean.getTipo().equals(ConstantesHermetic.TIPO_OPERACION_SOBRANTE)) {
                           montoSobrante = montoSobrante + Double.parseDouble(abonoCSBean.getMontoArchivo());
                       }
                   }
               }
               
              //EL TOTAL POR TIPO DE MONEDA SE AGREGA A LA LISTA
              montoTipoMoneda.setTipoUnidMonetaria(tipoUnidMoneBean.getCodTipoMoneda());
              montoTipoMoneda.setDescTipoUnidMonetaria(tipoUnidMoneBean.getDescTipoMoneda());
              montoTipoMoneda.setMontoDeposito(montoDeposito);
              montoTipoMoneda.setMontoFaltante(montoFaltante);
              montoTipoMoneda.setMontoSobrante(montoSobrante);
              listaTotalesTipoUniMone.add(montoTipoMoneda);
        }   
          
      
        //OBTENGO EL NUMERO DE TRANSACCION
        String transaccion = servicioHermetic.getNumeroTransaccion();
        logger.info("numero de transaccion a procesar: "+ transaccion);      
          
        //PROCESO LA CABECERA POR TIPO DE MONEDA   
        logger.info("Inicio generacion de Cabecera");            
        int secCabecera = 0;
        //OBTENGO EL NOMBRE DEL ARCHIVO Y TIPO DE REPRESENTACION POR MONEDA 
        //String nombreArchivoBase = servicioHermetic.getConfigArchivo(cliente, ConstantesHermetic.ABONO_NOMBRE_ARCHIVO,ConstantesHermetic.ABONO_CARGA_TIP_UNID_CERO);            
        String nombreArchivoBase=fechaServidorBean.getFechayyyymmddHHMISS().replace(":", "").substring(0,12);
        //OBTENGO EL ORDEN DE PROCESO POR TIPO DE MONEDA - PROCESO SOLES, PROCESO DOLARES Y DEMAS
        List listaOrdenMoneda = new ArrayList();      
        for (int idxOrden=0; idxOrden < listaTotalesTipoUniMone.size(); idxOrden++){
            MontoTipoMoneBean tipoUnidMoneBeanSoles = (MontoTipoMoneBean)listaTotalesTipoUniMone.get(idxOrden);
            if(tipoUnidMoneBeanSoles.getTipoUnidMonetaria().equals(ConstantesHermetic.TIPO_MONEDA_SOLES)){
                  listaOrdenMoneda.add(tipoUnidMoneBeanSoles); 
            }
        }
        for (int idxOrden=0; idxOrden < listaTotalesTipoUniMone.size(); idxOrden++){
            MontoTipoMoneBean tipoUnidMoneBeanDolares = (MontoTipoMoneBean)listaTotalesTipoUniMone.get(idxOrden);
            if(tipoUnidMoneBeanDolares.getTipoUnidMonetaria().equals(ConstantesHermetic.TIPO_MONEDA_DOLARES)){
                    listaOrdenMoneda.add(tipoUnidMoneBeanDolares); 
            }
        }
     
      //PROCESO DE TODOS LOS ABONOS

      long constante = 9999999;
      String num_1 = "";
      String num_2 = "";
      String nom_clie = "";
      String nombre = "";
      String identificacion = "";  
      String tipo_oper = "";
      int secuencia = secCabecera;
      int secuenciaLog = 0;   
      
      //OBTENGO LOS DATOS DE FECHA Y HORA DE HOY
      String lv_fec_hoy = fechaServidorBean.getFechaDiaHora();
      String lv_hoy = fechaServidorBean.getFechaDia();
      String lv_man = fechaServidorBean.getFechaManana();
      
      String descrip = "";
      int w_pos = 0;
      String w_aux = "";
      double mont = 0;
      int n_cmpb = 0;
      double mon_dife = 0;    
      
      String fechaHora = fechaServidorBean.getFechaDiaHora().substring(8,14);
      String fechaMesDia = fechaServidorBean.getFechaDiaSinForm().substring(2,4)+fechaServidorBean.getFechaDiaSinForm().substring(0,2);
         
      //PROCESO GENERACION DE ABONOS POR TIPO DE MONEDA
      logger.info("Inicio generacion de Abonos Cuerpo");
      for (int idxAbono=0; idxAbono < listAbonosPendientes.size(); idxAbono++){
         AbonoCSBean abonoCSBean = (AbonoCSBean) listAbonosPendientes.get(idxAbono);
         logger.info("generacion de abonos. Nro Comprobante: " + abonoCSBean.getNumCS() );
            
           if (abonoCSBean.getTipo().equals(ConstantesHermetic.TIPO_OPERACION_DEPOSITO))
               tipo_oper = "01";
           if (abonoCSBean.getTipo().equals(ConstantesHermetic.TIPO_OPERACION_SOBRANTE))
               tipo_oper = "03";
           if (abonoCSBean.getTipo().equals(ConstantesHermetic.TIPO_OPERACION_FALTANTE))
               tipo_oper = "02";
           
           //VALIDAR EL USO DE ESTAS DOS LINEAS
           num_1 = CadenaUtil.completaEspaciosBlanco(df2.format(Math.floor(Double.parseDouble(abonoCSBean.getMontoArchivo()))),"0","L",13);
           num_2 = abonoCSBean.getCuenta().replaceAll("-","").trim();

           EmpleadoBean empleadobean = servicioHermetic.getNombreIdentificacion(abonoCSBean.getTipoDocuCmpb(),abonoCSBean.getSerie(),abonoCSBean.getNumCS());
           nombre = empleadobean.getNombre();
           if (nombre == null) nombre = "";           
           identificacion = empleadobean.getIdentificacion();
           if (identificacion == null) identificacion = "";
           nom_clie = servicioHermetic.getInformacionClientePunto(abonoCSBean.getCodOrigen()).getNombreCliente();
           String linea="";
           //Campo 1 - Tipo de Operacion
           linea+=tipo_oper;
           //Campo 2 - Numero de CS en 7 digitos
           linea+=CadenaUtil.completaEspaciosBlanco(abonoCSBean.getNumCS(),"0","L",7);
           //Campo 3 - 8 espacios en blanco - antiguos codigos de referencia
           linea+=CadenaUtil.completaEspaciosBlanco(""," ","L",8);
           //Campo 4 - 67 espacios en blanco
           linea+=CadenaUtil.completaEspaciosBlanco(""," ","L",67);
           //Campo 5 - Monto del abono de hasta 13 digitos con ceros delante y sin punto decimal
           linea+=CadenaUtil.completaEspaciosBlanco((df1.format(Double.parseDouble(abonoCSBean.getMontoArchivo()))).replace(".", "").replace(",",""), "0", "L", 13);
           //Campo 6 - Palabra clave del BANBIF
           linea+=ConstantesHermetic.NOM_CLAV_BANBIF;
           //Campo 7 - Numero de cuenta de abono - hasta 20 digitos con ceros delante
           linea = linea + CadenaUtil.completaEspaciosBlanco(abonoCSBean.getCuenta().trim().replaceAll("-",""),"0","L",20);

          //OBTENGO EL NOMBRE DEL ARCHIVO POR TIPO DE MONEDA Y TIPO
          String nombreArchivoUM = "";
          if (tipo_oper!=null && tipo_oper.equals("01")){
            nombreArchivoUM = servicioHermetic.getConfigArchivo(cliente, ConstantesHermetic.ABONO_NOMBRE_ARCHIVO_DEPO_SOBR,abonoCSBean.getTipoUnidMonetaria());              
          }else{
            nombreArchivoUM = servicioHermetic.getConfigArchivo(cliente, ConstantesHermetic.ABONO_NOMBRE_ARCHIVO_FALT,abonoCSBean.getTipoUnidMonetaria());  
          }
          String nombreArchivo=nombreArchivoUM+nombreArchivoBase;
          secuencia++;
          String agregarLinea = servicioHermetic.insertarLineaTexto(transaccion,
                                                                         Integer.toString(secuencia).toString(),
                                                                         sucursal,
                                                                         cliente,
                                                                         nombreArchivo.toUpperCase(),
                                                                         usuario,
                                                                         linea);
          
          String agregarAbono = servicioHermetic.insertarLineaTextoAbonos(transaccion,
                                                                         Integer.toString(secuencia).toString(),
                                                                         sucursal,
                                                                         cliente,
                                                                         nombreArchivo.toUpperCase(),
                                                                         usuario,
                                                                         linea,
                                                                         abonoCSBean.getTipoUnidMonetaria());
          logger.warn("TEXTO BANBIF: " + linea);
        
          //PROCESO DE DEPOSTO               
          if (abonoCSBean.getTipo().equals(ConstantesHermetic.TIPO_OPERACION_DEPOSITO)) {
          
              //ACTUALIZA CUENTA CLIENTE
              CuentaClienteBean cuenta = new CuentaClienteBean();                           
              cuenta.setIndGeneracionArch(ConstantesHermetic.IND_GEN_ARCHIVO); //indGenArch
              cuenta.setUsuarioGeneraArchivo(usuario);
              cuenta.setFechaGeneArch(lv_fec_hoy); 
              cuenta.setIndImpCarg(ConstantesHermetic.IND_IMP_CARG);
              cuenta.setFechaImpCarg(lv_fec_hoy); 
              cuenta.setTipoComprobante(abonoCSBean.getTipoDocuCmpb()); 
              cuenta.setSerieComprobante(abonoCSBean.getSerie()); 
              cuenta.setNumeroComprobante(abonoCSBean.getNumCS()); 
              cuenta.setNumeroCargaIngreso(abonoCSBean.getCargoIngreso()); 
              
              String respActualizaCntaCliente = servicioHermetic.actualizaCuentasCliente(cuenta);     
              
              // GRABAR COMPROBANTE ABONO LOG DEPO
              secuenciaLog++;
              String resultado = servicioHermetic.insertarComprobanteAbonoLog(transaccion,
                                                                                    String.valueOf(secuenciaLog),
                                                                                    transaccion,
                                                                                    String.valueOf(secuencia),
                                                                                    sucursal,
                                                                                    cliente,
                                                                                    lv_fec_hoy,
                                                                                    abonoCSBean.getMontoArchivo(),
                                                                                    ConstantesHermetic.ABONO_MONTO_NETO_CERO,
                                                                                    ConstantesHermetic.ABONO_MONTO_ANOMALIA_CERO,
                                                                                    ConstantesHermetic.ABONO_IND_CSIN_RECU_CERO,
                                                                                    ConstantesHermetic.ABONO_MONTO_ACTA_CERO,
                                                                                    abonoCSBean);                        
         
              // GRABA_LOG()
              descrip = servicioHermetic.getDescripcionLogTransacciones ("117");
              if (descrip.equals(" "))
                System.out.println("ERROR EN CODIGO DE DESCRIPCION (LOG DE TRANSACCIONES)");
              w_pos = descrip.indexOf("&");
              if (w_pos >= 0) {
                  w_aux = descrip.substring(0,w_pos);
                      if (abonoCSBean.getCuenta()!=null)
                          w_aux = w_aux + " " + abonoCSBean.getCuenta().trim() + " ";
                  w_aux = w_aux + descrip.substring(w_pos + 1);
                  descrip = w_aux;
                  w_pos = descrip.indexOf("%");
                  if (w_pos >= 0) {
                      w_aux = descrip.substring(0,w_pos);
                      w_aux = w_aux + " " + " ";
                      w_aux = w_aux + descrip.substring(w_pos + 1);
                      descrip = w_aux;
                      w_pos = descrip.indexOf("%");
                  }
              }
              if (abonoCSBean.getMontoArchivo() == null)
                  mont = 0;
              else
                  mont = Double.parseDouble(abonoCSBean.getMontoArchivo());
              if (abonoCSBean.getNumCS() == null)
                  n_cmpb = 0;
              else
                  n_cmpb = Integer.parseInt(abonoCSBean.getNumCS());
              if (descrip.length() > 80)
                  w_aux = descrip.substring(0,80);
              else
                  w_aux = descrip;

              w_aux = w_aux + " - WEB";
              if (w_aux.length() > 80)
                  w_aux = w_aux.substring(0,80);
                  
                  LogBtmsBean logBtmsBean = new LogBtmsBean();
                  logBtmsBean.setCodUsua(usuario);
                  logBtmsBean.setDesAcci(w_aux);
                  logBtmsBean.setNumCmpb(abonoCSBean.getNumCS()); 
                  logBtmsBean.setCodSeriCmpb(abonoCSBean.getSerie());
                  logBtmsBean.setTipDocuCmpb(abonoCSBean.getTipoDocuCmpb());
                  logBtmsBean.setMonAcci(abonoCSBean.getMontoArchivo());
                  logBtmsBean.setIndImpr("0");                                   
                  String resulInsLogBtms = servicioHermetic.insertaLogBtms(logBtmsBean);                
          
          }else{
          
              //PROCESO DE ANOMALIAS - SOBRANTES Y FALTANTES                                 
                  ActaBean actaBean = new ActaBean();
                  actaBean.setIndCargAbon(ConstantesHermetic.IND_CARG_ABON_OK);
                  actaBean.setCodUsuaAbon(usuario);
                  actaBean.setFecCargAbon(lv_fec_hoy); 
                  actaBean.setIndImprAbon(ConstantesHermetic.IND_IMP_ABON_OK); 
                  actaBean.setFecImprAbon(lv_fec_hoy); 
                  actaBean.setTipDocuCmpb(abonoCSBean.getTipoDocuCmpb()); 
                  actaBean.setCodSeriCmpb(abonoCSBean.getSerie()); 
                  actaBean.setNumCmpb(abonoCSBean.getNumCS()); 
                  actaBean.setTipDocuActa(ConstantesHermetic.TIPO_DOCU_ACTA); 
                  
                  String resulActualizaActa = servicioHermetic.actualizaActa(actaBean);                       


                  // GRABAR COMPROBANTE ABONO LOG SOBRANTE - FALTANTE
                  secuenciaLog++;
                  String resultado = servicioHermetic.insertarComprobanteAbonoLog(transaccion,
                                                                                        String.valueOf(secuenciaLog),
                                                                                        transaccion,
                                                                                        String.valueOf(secuencia),
                                                                                        sucursal,
                                                                                        cliente,
                                                                                        lv_fec_hoy,
                                                                                        ConstantesHermetic.ABONO_MONTO_CUENTA_CERO,
                                                                                        ConstantesHermetic.ABONO_MONTO_NETO_CERO,
                                                                                        ConstantesHermetic.ABONO_MONTO_ANOMALIA_CERO,
                                                                                        ConstantesHermetic.ABONO_IND_CSIN_RECU_CERO,
                                                                                        abonoCSBean.getMontoArchivo(),
                                                                                        abonoCSBean);  

                  if (abonoCSBean.getTipo().equals("FALT"))
                    mon_dife = -1 * Double.parseDouble(abonoCSBean.getMontoArchivo());
                  else
                    mon_dife = Double.parseDouble(abonoCSBean.getMontoArchivo());
                  descrip = servicioHermetic.getDescripcionLogTransacciones ("118");
                  if (descrip.equals(" "))
                    System.out.println("ERROR EN CODIGO DE DESCRIPCION (LOG DE TRANSACCIONES)");
                  
                  w_pos = descrip.indexOf("&");
                  if (w_pos >= 0) {
                      w_aux = descrip.substring(0,w_pos);
                      w_aux = w_aux + " " + abonoCSBean.getCodSeriActa().trim() + "-" + abonoCSBean.getNumActa().trim() + " ";
                      w_aux = w_aux + descrip.substring(w_pos + 1);
                      descrip = w_aux;
                      w_pos = descrip.indexOf("%");
                      if (w_pos >= 0) {
                          w_aux = descrip.substring(0,w_pos);
                          //if (cliente.equals("9") || cliente.equals("14") || cliente.equals("244"))
                          //    w_aux = w_aux + " " + abonoCSBean.getCodCuenta().trim() + " ";
                          //else
                           if (abonoCSBean.getCuenta()!=null)
                              w_aux = w_aux + " " + abonoCSBean.getCuenta().trim() + " ";
                          w_aux = w_aux + descrip.substring(w_pos + 1);
                          descrip = w_aux;
                          w_pos = descrip.indexOf("%");
                      }
                  }
                  if (abonoCSBean.getMontoArchivo() == null)
                      mont = 0;
                  else
                      mont = Double.parseDouble(abonoCSBean.getMontoArchivo());
                  if (abonoCSBean.getNumCS() == null)
                      n_cmpb = 0;
                  else
                      n_cmpb = Integer.parseInt(abonoCSBean.getNumCS());
                  if (descrip.length() > 80)
                      w_aux = descrip.substring(0,80);
                  else
                      w_aux = descrip;

                  w_aux = w_aux + " - WEB";
                  if (w_aux.length() > 80)
                      w_aux = w_aux.substring(0,80);
                      
                      LogBtmsBean logBtmsBean = new LogBtmsBean();
                      logBtmsBean.setCodUsua(usuario);
                      logBtmsBean.setDesAcci(w_aux);
                      logBtmsBean.setNumCmpb(abonoCSBean.getNumCS()); 
                      logBtmsBean.setCodSeriCmpb(abonoCSBean.getSerie());
                      logBtmsBean.setTipDocuCmpb(abonoCSBean.getTipoDocuCmpb());
                      logBtmsBean.setMonAcci(abonoCSBean.getMontoArchivo());
                      logBtmsBean.setIndImpr("0");                                   
                      String resulInsLogBtms = servicioHermetic.insertaLogBtms(logBtmsBean);             
                          
              }
        
         }
         logger.info("Fin generacion de Abonos Cuerpo");
         
         
         List listUniMoneArchivo = new ArrayList();       
         String tipo_archivo = "";
         //DEPOSITOS SOLES
         TipoMonedaAbonoBean tipoMoneBean = new TipoMonedaAbonoBean();        
         tipoMoneBean.setCodTipoMoneda(ConstantesHermetic.ABONO_TIPO_BANBIF_SO);
         tipoMoneBean.setNombreArchivo(servicioHermetic.getConfigArchivo(cliente, ConstantesHermetic.ABONO_NOMBRE_ARCHIVO_DEPO_SOBR,ConstantesHermetic.ABONO_TIPO_BANBIF_SO)+nombreArchivoBase);
         tipoMoneBean.setDesTipoArchivo(ConstantesHermetic.TIPO_OPERACION_DEPOSITO);
         tipoMoneBean.setDescTipoMoneda(ConstantesHermetic.TIPO_MONEDA_SOLES_DESC);
         listUniMoneArchivo.add(tipoMoneBean);
         //DEPOSITOS DOLARES
         tipoMoneBean = new TipoMonedaAbonoBean();
         tipoMoneBean.setCodTipoMoneda(ConstantesHermetic.ABONO_TIPO_BANBIF_DO);         
         tipoMoneBean.setNombreArchivo(servicioHermetic.getConfigArchivo(cliente, ConstantesHermetic.ABONO_NOMBRE_ARCHIVO_DEPO_SOBR,ConstantesHermetic.ABONO_TIPO_BANBIF_DO)+nombreArchivoBase);
         tipoMoneBean.setDesTipoArchivo(ConstantesHermetic.TIPO_OPERACION_DEPOSITO);
         tipoMoneBean.setDescTipoMoneda(ConstantesHermetic.TIPO_MONEDA_DOLARES_DESC);
         listUniMoneArchivo.add(tipoMoneBean);
         //ANOMALIAS SOLES
         tipoMoneBean = new TipoMonedaAbonoBean();
         tipoMoneBean.setCodTipoMoneda(ConstantesHermetic.ABONO_TIPO_BANBIF_SO);
         tipoMoneBean.setNombreArchivo(servicioHermetic.getConfigArchivo(cliente, ConstantesHermetic.ABONO_NOMBRE_ARCHIVO_FALT,ConstantesHermetic.ABONO_TIPO_BANBIF_SO)+nombreArchivoBase);
         tipoMoneBean.setDesTipoArchivo(ConstantesHermetic.TIPO_OPERACION_ANOMALIA);
         tipoMoneBean.setDescTipoMoneda(ConstantesHermetic.TIPO_MONEDA_SOLES_DESC);
         listUniMoneArchivo.add(tipoMoneBean);
         //ANOMALIAS DOLARES
         tipoMoneBean = new TipoMonedaAbonoBean();
         tipoMoneBean.setCodTipoMoneda(ConstantesHermetic.ABONO_TIPO_BANBIF_DO);
         tipoMoneBean.setNombreArchivo(servicioHermetic.getConfigArchivo(cliente, ConstantesHermetic.ABONO_NOMBRE_ARCHIVO_FALT,ConstantesHermetic.ABONO_TIPO_BANBIF_DO)+nombreArchivoBase);
         tipoMoneBean.setDesTipoArchivo(ConstantesHermetic.TIPO_OPERACION_ANOMALIA);
         tipoMoneBean.setDescTipoMoneda(ConstantesHermetic.TIPO_MONEDA_DOLARES_DESC); 
         listUniMoneArchivo.add(tipoMoneBean);
              
         resultadoBean.setListTipoMoneArch(listUniMoneArchivo);       
         
         return resultadoBean;
      
    }
    
    public List<TipoMonedaAbonoBean> getListUltmArch(String codClie, String codSucuHtb,String tip_unid_mone){
      return abonosDAO.getListUltmArch(codClie, codSucuHtb, tip_unid_mone);
    }
}
